This is implicitly done for us in the case of grabs on windows from other
groups, but we must perform this check explicitly for grabs with
owner_events=True on windows from the same group, in that case the window
would handle the events as if there was no grab.
https://bugzilla.gnome.org/show_bug.cgi?id=752327
(grab_widget && grab_widget != event_widget &&
!gtk_widget_is_ancestor (event_widget, grab_widget)))
{
- if (_gtk_window_check_handle_wm_event (event))
- goto cleanup;
+ /* Ignore event if we got a grab on another toplevel */
+ if (!grab_widget ||
+ gtk_widget_get_toplevel (event_widget) == gtk_widget_get_toplevel (grab_widget))
+ {
+ if (_gtk_window_check_handle_wm_event (event))
+ goto cleanup;
+ }
}
/* Find out the topmost widget where captured event propagation